//package com.bussiness.service;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.bussiness.model.Article;
//import com.bussiness.model.ArticleRow;
//import com.common.util.SnowflakeIdWorker;
//import com.elastic.model.CreateIndexBean;
//import com.elastic.util.Esutil;
//import com.hbase.model.ColumnValueDto;
//import com.hbase.model.InsertHbaseValueDto;
//import com.hbase.util.HbaseAdmin;
//import com.model.EsHbaseModel;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.BeanFactoryUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestParam;
//
//import java.util.*;
//
///**
// * @description:
// * @author: zyj
// * @create: 2019-12-16 10:49
// **/
//@Service
//public class EsHbaseService {
//
//    @Autowired
//    private HbaseAdmin hbaseAdmin;
//
//    @Autowired
//    private Esutil esutil;
//
//    /**
//    * @Description: 创建索引和表名
//    * @Param: [esHbaseModel]
//    * @return: boolean
//    * @Author: zyj
//    * @Date: 2019/12/16
//    */
//    public boolean createIndexTable(EsHbaseModel esHbaseModel){
//        String tableName = esHbaseModel.getTableName();
//        List<CreateIndexBean> beanList = esHbaseModel.getEsHbaseIndexBeans();
//
//
//        /**1、创建hbase*/
//        int create = hbaseAdmin.createOneTable(tableName, esHbaseModel.getColumnFamilyNmae());
//
//        /**2、创建es索引*/
//        boolean  b = esutil.createIndex(beanList, tableName);
//
//        if(b&&create==1){
//            return true;
//        }
//
//        return false;
//    }
//
//    /**
//    * @Description: 批量添加数据
//    * @Param: []
//    * @return: boolean
//    * @Author: zyj
//    * @Date: 2019/12/16
//    */
//    public boolean insertValue(List<ArticleRow> article, String indexName, String columnFamily){
//        Map<String, Object> coverValue = getInserValue(article, columnFamily);
//        List<Article> rowList = (List<Article>) coverValue.get("es");
//        List<InsertHbaseValueDto> dataList = (List<InsertHbaseValueDto>) coverValue.get("hbase");
//        /**批量添加数据*/
//        boolean b = esutil.inseartDataBatch(JSONArray.parseArray(JSON.toJSONString(rowList)), indexName);
//
//        /**添加hbase数据*/
//        boolean h = hbaseAdmin.insertManyColumnRecordsList(dataList, indexName);
//
//        if(h&&b){
//            return true;
//        }
//
//        return false;
//    }
//
//    /**
//    * @Description: 拼接插入数据的格式
//    * @Param: [article]
//    * @return: java.util.Map<java.lang.String,java.lang.Object>
//    * @Author: zyj
//    * @Date: 2019/12/16
//    */
//    public Map<String, Object> getInserValue(List<ArticleRow> articleRows, String columnFamily){
//        SnowflakeIdWorker snowflakeIdWorker = SnowflakeIdWorker.getInstance();
//        Map<String, Object> map = new HashMap<>();
//
//        /**es插入数据*/
//        List<Article> rowList = new ArrayList<>();
//        /**hbase插入数据*/
//        List<InsertHbaseValueDto> dataList = new ArrayList<>();
//
//        for (int i=0; i<articleRows.size(); i++){
//            ArticleRow article = articleRows.get(i);
//            String rowKey = String.valueOf(snowflakeIdWorker.nextId());
//
//            /**拼接es数据*/
//            Article articleRow = new Article();
//            BeanUtils.copyProperties( articleRow, article);
//            articleRow.setRowKey(rowKey);
//            rowList.add(articleRow);
//
//            /**拼接hbase数据*/
//            List<ColumnValueDto> columnValueDtos = new ArrayList<>();
//            InsertHbaseValueDto insertHbaseValueDto = new InsertHbaseValueDto();
//            insertHbaseValueDto.setRow(rowKey);
//            insertHbaseValueDto.setColumnFamily(columnFamily);
//            JSONObject jsonObject = JSON.parseObject(JSON.toJSON(article).toString());
//            Iterator<Map.Entry<String, Object>> iterator = jsonObject.entrySet().iterator();
//            while (iterator.hasNext()){
//                ColumnValueDto columnValueDto = new ColumnValueDto();
//                Map.Entry<String,Object> entry = iterator.next();
//                String key = entry.getKey();
//                Object valueObj = entry.getValue();
//                if(null!=valueObj){
//                    String value = String.valueOf(entry.getValue());
//                    columnValueDto.setValue(value);
//                }
//                columnValueDto.setColumName(key);
//                columnValueDtos.add(columnValueDto);
//            }
//            insertHbaseValueDto.setDataList(columnValueDtos);
//            dataList.add(insertHbaseValueDto);
//        }
//
//        map.put("es",rowList);
//        map.put("hbase",dataList);
//
//        return map;
//    }
//}
